package com.sapitest.keywords;

import com.alibaba.fastjson.JSONObject;
import com.sapitest.utils.dbconn.JDBCUtil;
import org.testng.Reporter;

import java.util.List;

/**
 * MySQL，Oracle等数据库操作关键字，支持增删查改
 * @date 2019-01-13
 * @author Liuxu
 * @version 1.0.1
 * @since jdk1.8
 */
public class DBOperation {
    /**
     * 数据库查询
     * @param dbDriver    数据库驱动
     * @param url   数据库地址
     * @param user  数据库用户
     * @param pwd   数据库密码
     * @param sql   查询SQL语句，SELECT语句
     * @param timeout 连接超时时间，单位：s
     * @return  返回结果以jsonArray格式呈现
     */
    public static List<JSONObject> dbQuery(String dbDriver, String url, String user, String pwd, String sql, int timeout){
        JDBCUtil jul = JDBCUtil.newInstance(dbDriver, url, user, pwd, timeout);
        try {
            Reporter.log("执行结果：" + jul.executeQuery(sql), true);
            return jul.executeQuery(sql);
        } finally {
            jul.closeConn();
        }
    }

    /**
     * 数据库更新，例如 UPDATE,INSERT,DELETE
     * @param dbDriver    数据库驱动
     * @param url   数据库地址
     * @param user  数据库用户
     * @param pwd   数据库密码
     * @param sql   更新SQL语句，UPDATE,INSERT,DELETE
     * @param timeout 连接超时时间，单位：s
     * @return either (1) the row count for SQL Data Manipulation Language (DML) statements
     *         or (2) 0 for SQL statements that return nothing
     */
    public static int dbUpdate(String dbDriver, String url, String user, String pwd, String sql, int timeout){
        JDBCUtil jul = JDBCUtil.newInstance(dbDriver, url, user, pwd, timeout);
        try {
            Reporter.log("执行结果：" + jul.executeUpdate(sql), true);
            return jul.executeUpdate(sql);
        } finally {
            jul.closeConn();
        }
    }

}
